
import geoUtils from '../utils/geoUtils';

class BoxMeshInfo{
    constructor(meshInfo){

        // let vertices = meshInfo.vertexs;
        // let len = Math.floor(vertices.length / 3);
        //
        // let min_x = Infinity,min_y = Infinity,min_z = Infinity;
        // let max_x = -Infinity,max_y = -Infinity,max_z = -Infinity;
        // for(let i = 0; i < len; ++i){
        //     let x = vertices[3 * i];
        //     let y = vertices[3 * i + 1];
        //     let z = vertices[3 * i + 2];
        //     if(x > max_x){
        //         max_x = x;
        //     }
        //     if(y > max_y){
        //         max_y = y;
        //     }
        //     if(z > max_z){
        //         max_z = z;
        //     }
        //     if(x < min_x){
        //         min_x  = x;
        //     }
        //     if(y < min_y){
        //         min_y = y;
        //     }
        //     if(z < min_z){
        //         min_z = z;
        //     }
        // }
        // this.min = [min_x,min_y,min_z];
        // this.max = [max_x,max_y,max_z];

        this.min = meshInfo.min.map(v=>{return v});
        this.max = meshInfo.max.map(v=>{return v});

        // 顶点信息
        let x = this.max[0] - this.min[0];
        let y = this.max[1] - this.min[1];
        let z = this.max[2] - this.min[2];

        this.vertexs = [
            // 上面4个点
            -x/2,y/2,-z/2, // 0
            x/2,y/2,-z/2, // 1
            x/2,y/2,z/2, // 2
            -x/2,y/2,z/2, // 3

            // 下面4个点
            -x/2,-y/2,-z/2, // 4
            x/2,-y/2,-z/2, // 5
            x/2,-y/2,z/2, // 6
            -x/2,-y/2,z/2, // 7
        ];
        this.indices = [
            0,3,2, // +y
            0,2,1,

            3,7,6, // +z
            3,6,2,

            7,4,5, // -y
            7,5,6,

            0,4,7, // -x
            0,7,3,

            2,6,5, // +x
            2,5,1,

            1,5,4, // -z
            1,4,0,
        ];
        this.normals = geoUtils.calNormals(this.vertexs,this.indices);
    }
}

export default BoxMeshInfo;
